home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / C / ASAP / msgport.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-09  |  3.7 KB  |  116 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * AMsgPort wrapper class                                                    *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_AMsgPort_H
  12. #define ASAP_AMsgPort_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <CLIB/ALIB_PROTOS.h>
  19.  #include <Proto/EXEC.h>
  20.  #include <Proto/GadTools.h>
  21. }
  22.  
  23. class AMessage;
  24. class AIntuiMessage;
  25.  
  26. class AMsgPort : public MsgPort
  27. {
  28.  public:
  29.  inline void AddPort();
  30. // inline static AMsgPort * CreateMsgPort();
  31. // void * operator new(size_t);
  32.  inline static AMsgPort * CreatePort(STRPTR name = 0, long pri = 0);
  33.  void * operator new(size_t, STRPTR name = 0, long pri = 0);
  34. // inline void DeleteMsgPort();
  35.  inline void DeletePort();
  36.  void operator delete(void *);
  37.  inline AMsgPort * FindPort(UBYTE * name);
  38.  inline AIntuiMessage * GT_GetIMsg();
  39.  inline AMessage * GetMsg();
  40.  inline void PutMsg(Message * message);
  41.  inline void RemPort();
  42.  inline AMessage * WaitPort();
  43. };
  44. //----------------------------------------------------------------------------
  45. void AMsgPort::AddPort ()
  46. {
  47.  ::AddPort(this);
  48. }
  49. /*/----------------------------------------------------------------------------
  50. AMsgPort * AMsgPort::CreateMsgPort ()
  51. {
  52.  return (AMsgPort *) ::CreateMsgPort();
  53. }
  54. //----------------------------------------------------------------------------
  55. void * AMsgPort::operator new (size_t)
  56. {
  57.  return AMsgPort::CreateMsgPort();
  58. }
  59. *///----------------------------------------------------------------------------
  60. AMsgPort * AMsgPort::CreatePort (STRPTR name, long pri)
  61. {
  62.  return (AMsgPort *) ::CreatePort(name, pri);
  63. }
  64. //----------------------------------------------------------------------------
  65. void * AMsgPort::operator new (size_t, STRPTR name, long pri)
  66. {
  67.  return AMsgPort::CreatePort(name, pri);
  68. }
  69. /*/----------------------------------------------------------------------------
  70. void AMsgPort::DeleteMsgPort ()
  71. {
  72.  ::DeleteMsgPort(this);
  73. }
  74. *///----------------------------------------------------------------------------
  75. void AMsgPort::DeletePort ()
  76. {
  77.  ::DeletePort(this);
  78. }
  79. //----------------------------------------------------------------------------
  80. void AMsgPort::operator delete (void *port)
  81. {
  82.  ((AMsgPort *) port)->DeletePort();
  83. }
  84. //----------------------------------------------------------------------------
  85. AMsgPort * AMsgPort::FindPort (UBYTE * name)
  86. {
  87.  return (AMsgPort *) ::FindPort(name);
  88. }
  89. //----------------------------------------------------------------------------
  90. AIntuiMessage * AMsgPort::GT_GetIMsg ()
  91. {
  92.  return (AIntuiMessage *) ::GT_GetIMsg(this);
  93. }
  94. //----------------------------------------------------------------------------
  95. AMessage * AMsgPort::GetMsg ()
  96. {
  97.  return (AMessage *) ::GetMsg(this);
  98. }
  99. //----------------------------------------------------------------------------
  100. void AMsgPort::PutMsg (Message * message)
  101. {
  102.  ::PutMsg(this, message);
  103. }
  104. //----------------------------------------------------------------------------
  105. void AMsgPort::RemPort ()
  106. {
  107.  ::RemPort(this);
  108. }
  109. //----------------------------------------------------------------------------
  110. AMessage * AMsgPort::WaitPort ()
  111. {
  112.  return (AMessage *) ::WaitPort(this);
  113. }
  114.  
  115. #endif
  116.